package weixinkeji.dev.power.user.h;

import java.util.List;
import weixinkeji.dev.power.user.bean.SysUser;
import sys.wx.c.ATR;
import sys.wx.c.components.cv.CV;
import sys.wx.ann.hm.H;
import sys.wx.ann.hm.M;
import sys.wx.ann.power.head.GL;
import sys.wx.m.db.SQL.mysql.SQLD;
import sys.wx.m.db.SQL.mysql.common.where.Where;
import sys.wx.m.db.dao.mysql.Dao;
import sys.wx.m.db.dao.mysql.Dao2;
import sys.wx.xy.XY;
import weixinkeji.dev.power.center.so.URPSO;

/**
 *
 * @author IK
 */
@H("weixinkeji/dev/power/user/sysuser/adu")
@GL
public class SysUserADU {

    ATR a;                  //ATR是必须要的。它封装了web请求的相关信息
    Integer sort;//登陆人员类型（0 超级管理员，1管理员，2普通人员）

    public SysUserADU(ATR obj) {     //这个有参构造函数，也是必须的。它进行附值
        this.a = obj;
        sort = ((SysUser) a.session.getAttribute(XY.SESSION_LOGIN)).getSort();
    }

    @M("/add")
    public String a1() {
        SysUser obj = CV.getObject_Add(SysUser.class, a.request, new weixinkeji.dev.power.user.check.Check().doSysUser(false));
//        Integer sort = ((SysUser) a.session.getAttribute(XY.SESSION_LOGIN)).getSort();
        if (null == obj) {
            a.out_OK_NO(false, "您提交的数据存在格式问题。请注意数据字符的输入");
            return null;
        } else if ((obj.getSort() == 0 || obj.getSort() == 1) //添加的是管理员账号
                && sort != 0) {                         //添加人员不是超级管理员账号。
            a.out_OK_NO(false, "添加管理员用户，需要用超级管理员账号登陆进行操作。");
            return null;
        } else if (Dao.selectCount(SysUser.class, Where.putThenGet(Where.TJ_IGNORE_NOTHING, SysUser.class, "", "user_account", "=", obj.getUser_account())) > 0) {
            a.out_OK_NO(false, "已存货相同的账号，请换个账号再试。");
            return null;
        }
        a.out_OK_NO(Dao.add(obj));
        return null;
    }

    @M("/dell")
    public String d() {
        String id = a.request.getParameter("id");
        URPSO so;
        if (id.length() < 26) {
            return null;
        }
        String okID = CV.toSQLStringValue(id);
        List<SysUser> lsy = Dao.selectVast(SysUser.class, Where.putIN(Where.TJ_IGNORE_NOTHING, SysUser.class, "", "user_id", okID));
        boolean isNoSuperAdmin = sort != 0;
        for (SysUser obj : lsy) {
            if ((obj.getSort() == 0 || obj.getSort() == 1) //添加的是管理员账号
                    && isNoSuperAdmin) {                         //添加人员不是超级管理员账号。
                a.out_OK_NO(false, "删除管理员用户，需要用超级管理员账号登陆进行操作。本次删除不进行！");
                return null;
            }
        }
        so = new URPSO();
        a.out_OK_NO(Dao2.sql(
                SQLD.dellVast2(SysUser.class, okID),
                so.dellUsesRoles(okID),
                so.dellUsesPower(okID))
        );
        return null;
    }

    @M("/update")
    public String u() {
        return null != a.request.getParameter("id") ? select1(a.request.getParameter("id")) : update();
    }

    private String select1(String x) {
        a.request.setAttribute("SYSUSER", Dao.selectOneByID(SysUser.class, x));
        return "/power/sysuser/sysuser_U.jsp";
    }

    private String update() {
        SysUser obj, oldObj;
        obj = CV.getObject(SysUser.class, a.request, new weixinkeji.dev.power.user.check.Check().doSysUser(true));

        if (null == obj) {
            a.out_OK_NO(false, "您提交的数据存在格式问题。请注意数据字符的输入");
            return null;
        }
        oldObj = Dao.selectOneByID(SysUser.class, obj.getUser_id());
        if ((oldObj.getSort() == 0 || oldObj.getSort() == 1) //添加的是管理员账号
                && sort != 0) {                         //添加人员不是超级管理员账号。
            a.out_OK_NO(false, "修改管理员用户，需要用超级管理员账号登陆进行操作。");
            return null;
        } else if ((obj.getSort() == 0 || obj.getSort() == 1) //添加的是管理员账号
                && sort != 0) {                         //添加人员不是超级管理员账号。
            a.out_OK_NO(false, "将普通用户升级成管理员用户，需要用超级管理员账号登陆进行操作。");
            return null;
        }
        a.out_OK_NO(Dao.updateAlloy(obj, "user_password,user_name,style,sort"));
        return null;
    }
}
